package com.zmn.oms.common.constant;

import com.google.common.collect.Lists;
import com.zmn.common.dictionary.DictModel;
import com.zmn.common.utils.string.StringUtil;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 类描述：工单取消常量
 *
 * @author  liuying
 * @date   2022/03/09 17:43
 */
public class ConfCancelConsts {

    /**
     * 功能描述： 订单取消类型 运营平台
     *
     * @author tanbiao
     * @since 2019/10/23
     */
    public static final int ORDER_CANCEL_TYPE_BACK = 1;
    /**
     * 功能描述： 订单取消类型 厂商门户
     *
     * @author tanbiao
     * @since 2019/10/23
     */
    public static final int ORDER_CANCEL_TYPE_FRONT = 2;
    /**
     * 功能描述： 订单取消类型 服务商门户
     *
     * @author tanbiao
     * @since 2019/10/23
     */
    public static final int ORDER_CANCEL_TYPE_FACTORY = 3;
    /**
     * 功能描述： 订单取消类型 用户
     *
     * @author tanbiao
     * @since 2019/10/23
     */
    public static final int ORDER_CANCEL_TYPE_SERVICE = 4;

    /**
     * 功能描述： 订单取消类型 系统
     *
     * @author tanbiao
     * @since 2019/10/23
     */
    public static final int ORDER_CANCEL_TYPE_SYSTEM = 5;

    /**
     * 功能描述： 订单取消类型 工程师
     *
     * @author tanbiao
     * @since 2019/10/23
     */
    public static final int ORDER_CANCEL_TYPE_MASTER = 6;

    /**
     * 功能描述： 订单取消节点 未派单取消
     *
     * @author tanbiao
     * @since 2019/10/23
     */
    public static final int ORDER_CANCEL_NODE_NOT_SEND = 1;
    /**
     * 功能描述： 订单取消节点 未上门取消
     *
     * @author tanbiao
     * @since 2019/10/23
     */
    public static final int ORDER_CANCEL_NODE_NOT_SERVICE = 2;
    /**
     * 功能描述： 订单取消类型 前台
     *
     * @author tanbiao
     * @since 2019/10/23
     */
    public static final int ORDER_CANCEL_NODE_SERVICE = 3;

    /**
     * 功能描述 :取消类型 1后台 2前台
     *
     * @param
     * @return java.util.List<com.zmn.common.dictionary.DictModel>
     * @author tanbiao
     * @modifier
     * @since 2019/10/22
     */
    public static List<DictModel> getCancelTypeList() {
        List<DictModel> items = Lists.newArrayList();
        items.add(new DictModel(2, "用户"));
        items.add(new DictModel(1, "运营平台"));
        items.add(new DictModel(3, "厂商门户"));
        items.add(new DictModel(4, "服务商门户"));
        items.add(new DictModel(ORDER_CANCEL_TYPE_SYSTEM, "系统"));
        items.add(new DictModel(ORDER_CANCEL_TYPE_MASTER, "工程师"));
        return items;
    }

    /**
     * 功能描述 :取消节点：1 未派单取消、2 未上门取消、3 已上门取消
     *
     * @param
     * @return java.util.List<com.zmn.common.dictionary.DictModel>
     * @author tanbiao
     * @modifier
     * @since 2019/10/22
     */
    public static List<DictModel> getCancelNodeList() {
        List<DictModel> items = Lists.newArrayList();
        items.add(new DictModel(2, "未上门取消"));
        items.add(new DictModel(1, "未派单取消"));
        items.add(new DictModel(3, "已上门取消"));
        return items;
    }

    public static String getCancelNodeStr(String cancelNodes) {
        if (StringUtil.isNotBlank(cancelNodes)) {
            List<Integer> plats = Arrays.stream(cancelNodes.split(",")).map(e -> Integer.parseInt(e)).collect(Collectors.toList());
            StringBuilder stringBulider = new StringBuilder();
            plats.forEach(e -> {
                if (e.equals(ORDER_CANCEL_NODE_NOT_SEND)) {
                    stringBulider.append("未派单取消").append(",");
                } else if (e.equals(ORDER_CANCEL_NODE_NOT_SERVICE)) {
                    stringBulider.append("未上门取消").append(",");
                } else if (e.equals(ORDER_CANCEL_NODE_SERVICE)) {
                    stringBulider.append("已上门取消").append(",");
                }
            });
            if (stringBulider.length() < 1) {
                return "";
            }
            return stringBulider.deleteCharAt(stringBulider.length() - 1).toString();
        }
        return "";
    }

    /**
     * 功能描述 :多个类型拼装成字符串
     *
     * @param
     * @return java.util.List<com.zmn.common.dictionary.DictModel>
     * @author tanbiao
     * @modifier
     * @since 2019/10/22
     */
    public static String getCancelTypeStr(String cancelTypes) {
        if (StringUtil.isNotBlank(cancelTypes)) {
            List<Integer> plats = Arrays.stream(cancelTypes.split(",")).map(e -> Integer.parseInt(e)).collect(Collectors.toList());
            StringBuilder stringBulider = new StringBuilder();
            plats.forEach(e -> {
                if (e.equals(ORDER_CANCEL_TYPE_BACK)) {
                    stringBulider.append("运营平台").append(",");
                } else if (e.equals(ORDER_CANCEL_TYPE_FRONT)) {
                    stringBulider.append("用户").append(",");
                } else if (e.equals(ORDER_CANCEL_TYPE_FACTORY)) {
                    stringBulider.append("厂商门户").append(",");
                } else if (e.equals(ORDER_CANCEL_TYPE_SERVICE)) {
                    stringBulider.append("服务商门户").append(",");
                } else if (e.equals(ORDER_CANCEL_TYPE_SYSTEM)) {
                    stringBulider.append("系统").append(",");
                } else if (e.equals(ORDER_CANCEL_TYPE_MASTER)) {
                    stringBulider.append("工程师").append(",");
                }
            });
            return stringBulider.deleteCharAt(stringBulider.length() - 1).toString();
        }
        return "";
    }
}
